/*******************************************************************************
 * Created on 28.03.2012
 *
 * Copyright(c) 1995 - 2011 T-Systems Multimedia Solutions GmbH
 * Riesaer Str. 5, 01129 Dresden
 * All rights reserved.
 *******************************************************************************/
package ua.rudolf.calculator.beans.interfaces;

import java.util.List;

import ua.rudolf.calculator.beans.interfaces.common.HasOwner;
import ua.rudolf.calculator.beans.interfaces.common.HasTime;

/**
 * // TODO Comment me!
 * 
 * @author arudenko
 */
public interface Transaction extends HasOwner, HasTime {

    /**
     * @return цель платежа
     */
    TransactionReason getReason();

    /**
     * @param reason
     *            цель платежа
     */
    void setReason(TransactionReason reason);

    /**
     * @return категории платежа
     */
    List<Category> getCategories();

    /**
     * @param cats
     *            категории платежа
     */
    void setCategories(List<Category> cats);

    /**
     * @return сумма средств
     */
    Double getAmount();

    /**
     * @param amount
     *            сумма платежа
     */
    void setAmount(Double amount);

    /**
     * @return бюджет отправителя.
     */
    Budget getSender();

    /**
     * @param sender
     *            бюджет отправителя
     */
    void setSender(Budget sender);

    /**
     * @return бюджет получателя
     */
    Budget getReciever();

    /**
     * @param reciever
     *            бюджет получателя
     */
    void setReciever(Budget reciever);

    /**
     * @return true/false
     */
    Boolean isHistory();

    /**
     * @param isHistory
     *            цепочка истории
     */
    void setIsHistory(Boolean isHistory);

    /**
     * @return Все записи из истории до этого события
     */
    List<Transaction> getHistory();

    /**
     * @param history
     *            цепочка истории
     */
    void setHistory(List<Transaction> history);

}
